package com.weilun.config;

import com.weilun.interceptor.TokenInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/*
* 配置 Spring MVC 的拦截器
* */
@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Autowired
    private TokenInterceptor tokenInterceptor;

    /*
    拦截器和过滤器基本一致，只不过是放行方式不同。
    拦截器，只拦截spring框架中的请求，过滤器是servlet规范中的组件，用于拦截所有请求，
    如果项目中同时存在过滤器和拦截器，则过滤器先执行，拦截器后执行。
    如果想要某些特定路径不被拦截（例如登录接口），可以在 addPathPatterns 中排除这些路径：.excludePathPatterns("/login")
     */

    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(tokenInterceptor).addPathPatterns("/**").excludePathPatterns("/login");
                                                                //  /**：表示拦截除登录以外所有路径（/deps/{id}）
                                                                //  /*：表示拦截一级路径（/deps）
    }
}
